package com.zjmzxfzhl.modules.app.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zjmzxfzhl.common.core.base.BaseService;
import com.zjmzxfzhl.modules.app.entity.AppDoc;
import com.zjmzxfzhl.modules.app.entity.AppModi;
import com.zjmzxfzhl.modules.app.entity.AppProj;
import com.zjmzxfzhl.modules.app.form.AppDocVo;
import com.zjmzxfzhl.modules.app.form.AppModiVo;

import java.util.List;

/**
 * Service
 * 
 * @author 张森荣
 */
public interface AppModiService extends BaseService<AppModi> {
    /**
     * 分页查询
     * 
     * @param page
     * @param appModi
     * @return
     */
    IPage<AppModiVo> list(IPage<AppModiVo> page, AppModiVo appModiVo);
    /**
     * 分页查询
     *
     * @param page
     * @param appDocVo
     * @return
     */
    List<AppModiVo> getList(AppModiVo appModiVo);
    /**
     * 变更状态（待审批）
     *
     * @return
     */
    boolean pendingTrial(String modiId);

    /**
     * 变更状态（审批中）
     *
     * @return
     */
    boolean inReview(String modiId);
    /**
     * 变更状态（审批过）
     *
     * @return
     */
    boolean reviewed(String modiId);

    /**
     * 变更状态（已驳回）
     *
     * @return
     */
    boolean reject(String modiId);
    /**
     * 变更状态（已关闭）
     *
     * @return
     */
    boolean close(String modiId);
    /**
     * 新增项目，自动计算机构级别、机构级次码、是否叶子
     *
     * @param appModi
     * @return
     */
    AppModi launchChange(AppModi appModi);

    /**
     * 启动文档审批流程实例
     *
     * @return
     */
    boolean processStart(String modiId);

    /**
     * 查询项目是否需要发起变更
     *
     * @return
     */
    boolean projChange(String projId,String modiSubtype);

    /**
     * 查询审核变更
     *
     * @param processInstanceId
     * @return
     */
    List<AppModiVo> procModi(String processInstanceId);


    /**
     * 新增项目，自动计算机构级别、机构级次码、是否叶子
     *
     * @param appModi
     * @return
     */
    boolean saveAppModi(AppModi appModi);

    /**
     * 批量删除
     *
     * @return
     */
    boolean delByIds(String ids);
}
